import axios from 'axios'
// import { filter, reduce } from 'core-js/core/array'
//配置：购物车模块
//创建shopcar.js文件并导出子模块
export default {
    //开启命名空间
    namespaced: true,
    //要返回一个对象
    state: () => ({
        //获取购物车列表数据发送axios请求
        cart: []
    }),
    mutations: {
        //3.5在mutations中修改state的cart
        // 5.3mutations中函数相关update开头
        updateCart(state, cart) {
            state.cart = cart
        },
        //5.3mutation中通过id找到对应的索引，修改状态
        updateCarState(state,payload){
            let index=state.cart.findIndex(item=>item.id==payload.id)
            state.cart[index].goods_state=payload.value
        },
        //6.3mutation中通过id找到对应的索引，修改数量
        updateCartCount(state,payload){
            let index=state.cart.findIndex(item=>item.id==payload.id)
            state.cart[index].goods_count=payload.value
        },
        //7.4在mutation中将所有goods的state设置为最新状态
        updateAllState(state,val){
            state.cart.forEach(item=>item.goods_state=val)
        }
    },
    actions: {
        //3.2在actions 中函数一般习惯根据请求类型开头
        //actions中的函数用请求类型开头
        //用axios发请求获取结果
        async getCartList(context) {
            //在这里使用axios就在这里导入
            const res = await axios.get('https://www.escook.cn/api/cart')
            // console.log(res.data.list);
            context.commit('updateCart', res.data.list)
        }
    },
    getters:{
        //getters没有set，所以不能像计算属性一样完整写法
        allPrice(state){
            //先筛选出所有勾选的商品
            //再求和
            // return state.cart.filter(item=>item.goods_state)
            // .reduce((sum,item)=>sum+=item.goods_Count*
            // item.goods_price,0)
            let newCart=state.cart.filter(item=>item.goods_state)
            return newCart.reduce((sum,item)=>sum+=item.goods_count*item.goods_price,0)
        },
        allCount(state){
            //求所有已选中商品的总数量
            return state.cart.filter(item=>item.goods_state)
            .reduce((sum,item)=>sum+=item.goods_count,0)
        },
    }
}